package com.kpmg.datalake.common.enums;

/**
 * 返回信息编码，及摘要
 *
 * @author Alex.zhao [alex.zhao@kpmg.com]
 * @since Created on azhao6 on 2018-06-27 13:34:38
 */
public enum ResultCodeEnum {
  /**
   * CODE2000(2000, "操作成功")
   */
  CODE0000(0, "操作成功"),
  /**
   * CODE0001(1, "操作失败")
   */
  CODE0001(1, "操作失败"),
  /**
   * CODE0002(2, "登录超时")
   */
  CODE0002(2, "登录超时"),
  /**
   * CODE0003(3, "外部系统密码必填"),
   */
  CODE0003(3, "外部系统密码必填"),
  /**
   * CODE0002(4, "请重新登录")
   */
  CODE0004(4, "请重新登录"),
  /**
   * CODE3000(3000, "成功但有警告")
   */
  CODE3000(3000, "成功但有警告"),
  /**
   * CODE4000(4000,"不能为空")
   */
  CODE4000(4000, "不能为空"),
  /**
   * CODE4001(4001,"只能为空")
   */
  CODE4001(4001, "只能为空"),
  /**
   * CODE4003(4003,"只能为真")
   */
  CODE4003(4003, "只能为真"),
  /**
   * CODE4004(4004,"只能为假")
   */
  CODE4004(4004, "只能为假"),
  /**
   * CODE4005(4005,"项目不能为空")
   */
  CODE4005(4005, "项目不能为空"),
  /**
   * CODE4006(4006, "查询过滤条件不能为空");
   */
  CODE4006(4006, "查询过滤条件不能为空"),

  /**
   * 未授权, 请重新登录
   */
  CODE4010(4010, "未授权, 请联系管理员"),
  /**
   * CODE4012(4012, "数据库配置错误")
   */
  CODE4012(4012, "数据库配置错误"),
  /**
   * CODE4013(4013, "不支持的数据库类型")
   */
  CODE4013(4013, "不支持的数据库类型"),
  /**
   * CODE4014(4014, "sql语法错误")
   */
  CODE4014(4014, "执行sql出错"),
  /**
   * CODE4015(4015, "sql语法错误")
   */
  CODE4015(4015, "sql语法错误"),
  /**
   * CODE4016(4016, "一次只能执行一条sql")
   */
  CODE4016(4016, "一次只能执行一条sql"),
  /**
   * CODE4017(4017, "密码不能为空")
   */
  CODE4017(4017, "密码不能为空"),
  /**
   * CODE4018(4018, "密码错误")
   */
  CODE4018(4018, "密码错误"),
  /**
   * CODE4019(4019, "名称重复")
   */
  CODE40189(4019, "名称重复"),
  /**
   * CODE4020(4020, "数据重复")
   */
  CODE4020(4020, "数据重复"),
  /**
   * CODE4020(4021, "未找到对应的数据")
   */
  CODE4021(4021, "未找到对应的数据"),
  /**
   * CODE4022(4022, "AD认证失败")
   */
  CODE4022(4022, "AD认证失败"),
  /**
   * CODE4022(4023, "用户不存在")
   */
  CODE4023(4023, "用户不存在"),
  /**
   * CODE4024(4024, "用户不能为空")
   */
  CODE4024(4024, "用户不能为空"),
  /**
   * CODE4025(4025,"行业化建模脚本不能为空")
   */
  CODE4025(4025, "行业化建模脚本不能为空"),
  /**
   * CODE4026(4026, "用户已存在")
   */
  CODE4026(4026, "用户已存在"),
  /**
   * CODE4027(4027, "行业或主题不能为空"),
   */
  CODE4027(4027, "行业或主题不能为空"),
  /**
   * CODE4028(4028, "行业化建模脚本,sql语法错误")
   */
  CODE4028(4028, "行业化建模脚本,sql语法错误"),
  /**
   * CODE4029(4029, "行业化数据处理脚本,sql语法错误")
   */
  CODE4029(4029, "行业化数据处理脚本,sql语法错误"),
  /**
   * CODE4030(4030, "项目权限同步失败")
   */
  CODE4030(4030, "项目权限同步失败"),

  /**
   * CODE4031(4027, "SFTP连接失败")
   */
  CODE4031(4031, "SFTP连接失败"),
  /**
   * CODE4032(4028, "项目名称已存在")
   */
  CODE4032(4032, "项目名称已存在"),
  /**
   * CODE4033(4033, "数据不存在")
   */
  CODE4033(4033, "参数类型不存在"),

  /**
   * 4034, "用户已锁定"
   */
  CODE4034(4034, "用户已锁定"),
  /**
   * CODE4031(4027, "SFTP连接失败")
   */
  CODE4035(4035, "SFTP路径不存在"),
  /**
   * 4036, "用户已注销"
   */
  CODE4036(4036, "用户已注销"),
  /**
   * 4037, "用户已过期"
   */
  CODE4037(4037, "用户已过期"),
  /**
   * CODE4038(4038, "任务ID不能为空")
   */
  CODE4038(4038, "任务ID不能为空"),
  /**
   * CODE4039(4039, "任务执行周期不合法")
   */
  CODE4039(4039, "任务执行周期不合法"),
  /**
   * CODE4040(4040, "任务动作不合法，后台找不到对应的执行动作"),
   */
  CODE4040(4040, "任务动作不合法，后台找不到对应的执行动作"),
  /**
   * CODE4041(4041, "未找到对应的文件信息")
   */
  CODE4041(4041, "未找到对应的文件信息"),
  /**
   * 4042, "登录失败N次,用户已锁定"
   */
  CODE4042(4042, "连续登录失败{0}次，用户已锁定"),
  /**
   * 4042, 4043, "您的查询请求已存在，请查看请求编号:{0}"
   */
  CODE4043(4043, "您的查询请求已存在，请查看请求编号:{0}"),
  /**
   * CODE9998(9998, "未知错误,系统拦截异常")
   */
  CODE9998(9998, "未知错误,系统拦截异常"),
  /**
   * CODE9999(9999, "未知错误")
   */
  CODE9999(9999, "未知错误"),
  /***
   * 内部使用 外部不要使用
   */
  CODE10000(10000, "未找到对应的code信息"),

  /**
   * CODE5000(5000, "配置行业模板异常");
   */
  CODE5000(5000, "配置行业模板异常:");
  private Integer code;
  private String display;

  ResultCodeEnum(Integer code, String display) {
    this.code = code;
    this.display = display;
  }

  public static ResultCodeEnum getEnumByCode(Integer code) {
    for (ResultCodeEnum resultCodeEnum : ResultCodeEnum.values()) {
      if (resultCodeEnum.getCode().equals(code)) {
        return resultCodeEnum;
      }
    }
    ResultCodeEnum result = ResultCodeEnum.CODE10000;
    result.setDisplay(code + result.getDisplay());
    return result;
  }

  public Integer getCode() {
    return code;
  }


  public String getDisplay() {
    return display;
  }

  public void setDisplay(String display) {
    this.display = display;
  }

}
